package com.hujiang.basic.search.api;

import com.hujiang.basic.search.model.*;

public interface IndexService {

    /**
     * 向ES中添加一篇文档, source字段必须和mapping严格一致
     * 
     * @param req
     * @return
     */
    HJIndexResponse add(HJIndexRequest req);

    HJDeleteResponse deleteOldIndices() ;

    /**
     * 从ES中删除一篇文档
     * 
     * @param req
     * @return
     */
    HJDeleteResponse delete(HJDeleteRequest req);

    /**
     * 根据文档的id，更新ES中的文档
     * 
     * @param req
     * @return
     */
    HJUpdateResponse update(HJUpdateRequest req);

    /**
     * 向ES中批量插入文档，sources中的元素代表文档，须为json格式。<br>
     * 若需指定文档的id，可在文档中加_id项，如：
     *  <pre>{"myfield": "myfieldValue", "_id" : "mydocID-1234"}</pre>
     * 
     * @param req
     * @return
     */
    HJBulkResponse bulkAdd(HJBulkIndexRequest req);

    /**
     * 批量从ES中删除文档，sources中的元素代表文档，须为json格式。<br>
     * json中须包含待删除的文档的id，如： <pre>{"_id" : "mydocID-1234"}</pre>
     * 
     * @param req
     * @return
     */
    HJBulkResponse bulkDelete(HJBulkDeleteRequest req);

    /**
     * 查询更新 update by query
     *
     * @param req
     * @return
     */
    HJUpdateByQueryResponse updateByQuery(HJUpdateByQueryRequest req);
}
